﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Linq.Expressions;
using System.Linq;
using System.Runtime.InteropServices;

namespace Sigos
{
    public partial class frmEmpresaEmitente : Form
    {
        public frmEmpresaEmitente()
        {
            InitializeComponent();
        }
        Utilidades util = new Utilidades();

        public void CarregarDados()
        {
            using (SigosEntities Entidades = new SigosEntities())
            {
                var Dados = Entidades.Empresa.FirstOrDefault();
                txtCNPJ.Text = Dados.CNPJ;
                txtXNome.Text = Dados.xNome;
                txtXFant.Text = Dados.xFant;
                txtCEP.Text = Dados.CEP;
                txtXLgr.Text = Dados.xLgr;
                txtXCpl.Text = Dados.xCpl;
                txtXnro.Text = Dados.nro;

                
                cboEstado.SelectedValue = Dados.UF;
                CarregaCidades(Dados.UF);
                cboCidade.SelectedValue = Dados.cMun;
                txtFone.Text = Dados.fone;
                txtIE.Text = Dados.IE;
                txtIEST.Text = Dados.IEST;
                txtIM.Text = Dados.IM;
                txtCNAE.Text = Dados.CNAE;
                cboCRT.SelectedValue = Dados.CRT;
            }
        }

        public void CarregaEstados()
        {
            using (SigosEntities Entidades = new SigosEntities())
            {
                var Estado = (from est in Entidades.MunicipiosIBGE
                              select new { est.NomeUF, est.SiglaUF }).Distinct();
                var Estado2 = Estado.OrderBy(est => est.NomeUF);
                cboEstado.DataSource = Estado2;
                cboEstado.DisplayMember = "NomeUF";
                cboEstado.ValueMember = "SiglaUF";
            }
        }

        public void CarregaCidades(string SiglaEstado)
        {
            using (SigosEntities Entidades = new SigosEntities())
            {
                var Cidade = (from cid in Entidades.MunicipiosIBGE
                              where cid.SiglaUF == SiglaEstado
                              orderby cid.NomeMunicipio
                              select cid).ToList();
                cboCidade.DataSource = Cidade;
                cboCidade.DisplayMember = "NomeMunicipio";
                cboCidade.ValueMember = "Municipio";
            }
        }

        public void CarregaCRT()
        {
            using (SigosEntities Entidades = new SigosEntities())
            {
                var CRTs = (from cr in Entidades.CRT
                            select cr).ToList();
                cboCRT.DataSource = CRTs;
                cboCRT.DisplayMember = "Descricao";
                cboCRT.ValueMember = "Codigo";
            }
        }
        
        private void frmEmpresaEmitente_Load(object sender, EventArgs e)
        {
            CarregaEstados();
            CarregaCRT();
            CarregarDados();
        }
        private void btnNovo_Click(object sender, EventArgs e)
        {
           
        }

        private void btnLocalizar_Click(object sender, EventArgs e)
        {

        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            lblProcessando.Visible = true;
            bProgresso.Visible = true;
            bProgresso.Enabled = true;
            bProgresso.Value = 50;
            using (SigosEntities Entidades = new SigosEntities())
            {
                try
                {
                    var vEmpresa = Entidades.Empresa.FirstOrDefault(cli => cli.Ccodigo == 1);
                    vEmpresa.CNPJ = util.removeFormatacao(txtCNPJ.Text);
                    vEmpresa.CPF = util.removeFormatacao(txtCPF.Text);
                    vEmpresa.xNome = util.TirarAcento(txtXNome.Text);
                    vEmpresa.xFant = util.TirarAcento(txtXFant.Text);
                    vEmpresa.CEP = util.removeFormatacao(txtCEP.Text);
                    vEmpresa.xLgr = util.TirarAcento(txtXLgr.Text);
                    vEmpresa.xCpl = util.TirarAcento(txtXCpl.Text);
                    vEmpresa.nro = util.VarreString(txtXnro.Text);
                    vEmpresa.UF = cboEstado.SelectedValue.ToString();
                    vEmpresa.cMun = int.Parse(cboCidade.SelectedValue.ToString());
                    vEmpresa.xMun = util.TirarAcento(cboCidade.Text);
                    vEmpresa.xPais = txtXPais.Text;
                    vEmpresa.cPais = txtCpais.Text;
                    vEmpresa.fone = util.VarreString(txtFone.Text);
                    vEmpresa.IE = util.VarreString(txtIE.Text);
                    vEmpresa.IEST = util.VarreString(txtIEST.Text);
                    vEmpresa.IM = util.VarreString(txtIM.Text);
                    vEmpresa.CNAE = util.VarreString(txtCNAE.Text);
                    vEmpresa.CRT = cboCRT.SelectedValue.ToString();

                    ///////////////////////////////////////////////////////////////////////////////
                    Entidades.ObjectStateManager.ChangeObjectState(vEmpresa, EntityState.Modified);
                    Entidades.SaveChanges();
                    util.Informacao("Registro salvo com sucesso");
                    this.Close();
                    
                }
                catch (System.Exception ex)
                {
                    util.Erro("Aconteceu um erro ao atualizar o cadastro da empresa, o erro foi: " + ex.Message.ToString());
                }
                
                bProgresso.Value = 100;
                bProgresso.Visible = false;
                lblProcessando.Visible = false;
            }
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            
        }

        private void btnSair_Click(object sender, EventArgs e)
        {            
            if (util.Sair() == true)
            {
                this.Close();
            }
        }

        private void cboEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarregaCidades(cboEstado.SelectedValue.ToString());
        }

        private void txtIE_Leave(object sender, EventArgs e)
        {
            util.ValidaIE(txtIE.Text, cboEstado.SelectedValue.ToString(), txtIE);
        }

        private void txtIEST_Leave(object sender, EventArgs e)
        {
            util.ValidaIE(txtIEST.Text, cboEstado.SelectedValue.ToString(), txtIEST);
        }

        private void txtCNPJ_Leave_1(object sender, EventArgs e)
        {
            util.ValidaCNPJ(txtCNPJ.Text, txtCNPJ);
        }

        private void frmEmpresaEmitente_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.F4:
                    btnSalvar_Click(sender, e);
                    break;
                case Keys.F6:
                    btnSair_Click(sender, e);
                    break;
            }
        }
        //Tela Finalizada em 25/01/2011 às 21:28
        //Davi

    }
}
